AWS Lambda のファンクション実行時間を5分まで延長させてみる #reinvent
AWS Lambda のファンクションが5分まで延長可能に
re:Invent 2015 にて AWS Lambda の大幅アップデートがあり、ファンクションの実行時間が延長されるアップデートがありました。これによって、より長い処理を Lambda に任せることができるようになりました。
「ETL 処理などがとてもフィットする」と書かれていますが、最大実行時間が5分に増加されたことにより、大きいボリュームのデータを処理するアプリケーションなどに適しているというわけです。このようなユースケースはなかなか多いのではないでしょうか。
ということで、簡単ではありますが試してみました。
ファンクションの実行時間の延長
実行時間の延長は Configuration の Timeout で行います。5分まで設定できるようになっています。
ファンクションの実行時間の確認
実行時間は Context#getRemainingTimeInMillis
メソッドで確認することが出来ます。
5分まで延長させてみる
ものは試し、5分まで無理矢理延長させてみましょう。while
文で5分スリープさせてみました。5分ぴったりだとタイムアウトしてしまうので、4分50秒くらいにしています。
exports.handler = function(event, context) { console.log('Start!'); console.log('RemainingTimeInMillis : ' + context.getRemainingTimeInMillis()); var millseconds = 290000; // 4分50秒 var startTime = new Date().getTime(); while (new Date().getTime() < startTime + millseconds); console.log('OK!'); };
「Save and test」を行うと実行されます。Lambda のコンソール上では下図のようにずっと待たされます。
ちなみに Lambda のコンソールでは60秒以上かかる function の結果は表示できないので、CloudWatch で見る必要があります。
CloudWatch でログを見てみましょう。5分近く延長されていることが確認できました!
まとめ
今回の大規模アップデートにより、Lambda の利用用途がぐっと広まりました。沢山使っていきましょう!